package sams.ck.servlet;

import java.io.IOException;
import java.sql.SQLException;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import sams.ck.entity.Student;
import sams.ck.entity.stuPage;
import sams.ck.service.stuService;

public class stuServlet extends HttpServlet {

	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//设置编码格式
		request.setCharacterEncoding("utf-8");
		//获取浏览器端的请求路径
		String uri=request.getRequestURI();
		//将获取的请求资源路径uri进行字符串切割处理
		String path=uri.substring(uri.lastIndexOf("/"),uri.lastIndexOf("."));
		//创建业务类型实例对象
		stuService service = new stuService();
		//根据处理后的字符串来判断用户的请求
		if(path.equals("/stuList")){
			// 获取浏览器端传递的参数 要查询的页数
			String current = request.getParameter("current");
			// 创建一个分页信息
			stuPage page = new stuPage();
			try {
				// 查询总记录行数
				int rows = service.findRows(page);
				// 将查询出的总行数 添加到 page当中
				page.setRows(rows);
				// 判断current的值是否为null值 如果不是 null
				if (current != null) {
					int cur = Integer.parseInt(current);
					page.setCurrentPage(cur);
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
			//调用业务层的代码  获取所有的员工信息
			List<Student> stus;
			try {
				stus = service.findByPage(page);
				request.setAttribute("stus", stus);
			} catch (SQLException e) {
				e.printStackTrace();
			}
			//将查询到的数据 传递给视图页面  由视图页面将数据返回给浏览器 展示在用户面前
			//step1  先将数据绑定到request对象上
			
			request.setAttribute("page", page);
			//step2 获取转发器
			RequestDispatcher dis=request.getRequestDispatcher("stuList.jsp");
			//step3 转发
			dis.forward(request, response);
		}else if(path.equals("/addStu")) {
			// 获取前端浏览器传递过来的员工信息
			String stuId = request.getParameter("stuId");//学号
			String stuName = request.getParameter("stuName");//姓名
			String stuClass = request.getParameter("stuClass");//班级
			double ChineseScore = Double.parseDouble(request.getParameter("ChineseScore"));//语文
			double MathScore = Double.parseDouble(request.getParameter("MathScore"));//数学
			double EnglishScore = Double.parseDouble(request.getParameter("EnglishScore"));//英语
			// 将获取的前端传递的参数封装到Stu对象当中
			Student Stu = new Student();
			Stu.setStuId(stuId);
			Stu.setStuName(stuName);
			Stu.setStuClass(stuClass);
			Stu.setChineseScore(ChineseScore);
			Stu.setMathScore(MathScore);
			Stu.setEnglisScore(EnglishScore);
			//调用业务层代码提交给数据库
			service.stuAdd(Stu);
			// 添加成功后将页面重定向会 信息展示页
			response.sendRedirect("stuList.do");
		}else if(path.equals("/delStu")) {
			// 服务端获取浏览器端传递的参数
			String stuId = request.getParameter("stuId");
			//调用业务层删除函数
			service.stuDel(stuId);
			// 使用重定向技术 完成页面的跳转
			response.sendRedirect("stuList.do");
		}else if (path.equals("/toUpdateStu")) {
			// 获取前端产地过来的stuId值
			String stuId = request.getParameter("stuId");//学号
			Student stu = service.findByStuId(stuId);
			// 将查询出的数据绑定到request对象中
			request.setAttribute("stu", stu);
			// 转发到updateStu.jsp页面
			request.getRequestDispatcher("updateStu.jsp").forward(request, response);
		}else if (path.equals("/updateStu")) {
			// 获取请求参数
			String stuId = request.getParameter("stuId");//学号
			String stuName = request.getParameter("stuName");//姓名
			String stuClass = request.getParameter("stuClass");//班级
			double ChineseScore = Double.parseDouble(request.getParameter("ChineseScore"));//语文
			double MathScore = Double.parseDouble(request.getParameter("MathScore"));//数学
			double EnglishScore = Double.parseDouble(request.getParameter("EnglishScore"));//英语
			// 封装数据
			Student Stu = new Student();
			Stu.setStuId(stuId);
			Stu.setStuName(stuName);
			Stu.setStuClass(stuClass);
			Stu.setChineseScore(ChineseScore);
			Stu.setMathScore(MathScore);
			Stu.setEnglisScore(EnglishScore);
			//实现修改业务
			service.updateStu(Stu);
			// 重定向回列表显示页面
			response.sendRedirect("stuList.do");
		}else if (path.equals("/toInquiryStu")) {
			// 服务端获取浏览器端传递的参数
			String stuId = request.getParameter("stuId");
			//调用业务层的查询方法
			Student stu = service.selecStudent(stuId);
			//将查询结果传给前端
			// 将查询出的数据绑定到request对象中
			request.setAttribute("stu", stu);
			// 转发到inquiryStu.jsp页面
			request.getRequestDispatcher("inquiryStu.jsp").forward(request, response);
		}
	}

}
